import $http from '@/utils/request'

const api = {
  // 作业相关接口
  createBookSchoolAssignment: 'app-api/bookSchoolAssignment/createBookSchoolAssignment',
  updateBookSchoolAssignment: 'app-api/bookSchoolAssignment/updateBookSchoolAssignment',
  deleteBookSchoolAssignment: 'app-api/bookSchoolAssignment/deleteBookSchoolAssignment',
  // 班级管理相关接口
  createBookClassManagement: 'app-api/bookClassManagement/createBookClassManagement',
  getBookClassManagementById: 'app-api/bookClassManagement/getBookClassManagementById',
  getBookClassManagementList: 'app-api/bookClassManagement/getBookClassManagementList',
  updateBookClassManagement: 'app-api/bookClassManagement/updateBookClassManagement',
  getBookClassManagementBookSchoolAssignmentList: 'app-api/bookClassManagement/getBookClassManagementBookSchoolAssignmentList',
  submitJob: 'app-api/bookClassManagement/submitJob',
  joinBookClassManagement: 'app-api/bookClassManagement/JoinBookClassManagement',
}

/**
 * 新增作业
 * @param {Object} data - 作业数据
 * @param {string} data.jobName - 作业名称（必填）
 * @param {string} data.jobTime - 作业日期（必填）
 * @param {string} data.jobCompletionConditions - 完成条件（必填）1:完成配音 2:完成阅读
 * @param {string} data.classManagementId - 班级ID（必填）
 * @param {string} data.bookIds - 书籍ID（必填）格式如：1_2
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const createBookSchoolAssignment = (data) => {
  return $http.post(api.createBookSchoolAssignment, data)
}

/**
 * 修改作业
 * @param {Object} data - 作业数据
 * @param {string} data.id - 作业ID（必填）
 * @param {string} data.jobName - 作业名称（必填）
 * @param {string} data.jobTime - 作业日期（必填）
 * @param {string} data.jobCompletionConditions - 完成条件（必填）1:完成配音 2:完成阅读
 * @param {string} data.classManagementId - 班级ID（必填）
 * @param {string} data.bookIds - 书籍ID（必填）格式如：1_2
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const updateBookSchoolAssignment = (data) => {
  return $http.put(api.updateBookSchoolAssignment, data)
}

/**
 * 删除作业
 * @param {string} id - 作业ID（必填）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const deleteBookSchoolAssignment = (id) => {
  return $http.delete(`${api.deleteBookSchoolAssignment}/${id}`)
}

/**
 * 创建班级
 * @param {Object} data - 班级数据
 * @param {string} data.classManagementName - 班级名称（必填）
 * @param {string} data.classManagementTeacher - 教师名称（必填）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const createBookClassManagement = (data) => {
  return $http.post(api.createBookClassManagement, data)
}

/**
 * 获取班级信息
 * @param {number} id - 班级ID
 * @returns {Promise} 返回班级详细信息
 * @description 根据班级ID获取班级详细信息，包括班级基本信息、作业列表和成员列表
 * @example
 * getBookClassManagementById(1)
 *
 * @response
 * {
 *   code: 200,
 *   data: {
 *     id: 1,
 *     classManagementName: "三年级一班",
 *     classManagementTeacher: "张老师",
 *     classManagementPassword: "abc123",
 *     bookSchoolAssignmentSaveRespVOList: [], // 作业列表
 *     bookSchoolAssignmentListVOList: [] // 成员列表
 *   },
 *   msg: "success"
 * }
 */
export const getBookClassManagementById = (id) => {
  return $http.get(api.getBookClassManagementById, { id })
}

/**
 * 获取班级列表
 * @returns {*}
 */
export const getBookClassManagementList = () => {
  return $http.get(api.getBookClassManagementList)
}

/**
 * 更新班级信息
 * @param {Object} data - 班级更新数据
 * @param {string} data.classManagementName - 班级名称
 * @param {string} data.classManagementTeacher - 教师名称
 * @param {string} data.lsItLocked - 是否锁定
 * @returns {Promise} 返回更新结果
 * @description 更新班级的基本信息，包括班级名称、教师名称和锁定状态
 * @example
 * updateBookClassManagement({
 *   classManagementName: "三年级二班",
 *   classManagementTeacher: "李老师",
 *   lsItLocked: "0"
 * })
 */
export const updateBookClassManagement = (data) => {
  return $http.put(api.updateBookClassManagement, data)
}

/**
 * 根据作业ID获取作业详情
 * @param {string} id - 作业ID
 * @returns {Promise} 返回作业详细信息
 * @description 根据作业ID获取作业的详细信息，包括作业基本信息、完成情况列表和相关书籍信息
 * @example
 * getBookClassManagementBookSchoolAssignmentList("123")
 *
 * @response
 * {
 *   code: 200,
 *   data: {
 *     id: 123,
 *     jobName: "阅读作业",
 *     jobTime: "2024-01-15",
 *     jobCompletionConditions: 1,
 *     classManagementId: 1,
 *     bookIds: "1,2,3",
 *     bookSchoolAssignmentListVOList: [
 *       {
 *         id: 1,
 *         type: 1, // 1:完成 2:未完成
 *         nickName: "张三",
 *         memberId: 101
 *       }
 *     ]
 *   },
 *   msg: "success"
 * }
 */
export const getBookClassManagementBookSchoolAssignmentList = (id) => {
  return $http.get(`${api.getBookClassManagementBookSchoolAssignmentList}/${id}`)
}

/**
 * 提交作业
 * @param {Object} data - 作业提交数据
 * @param {string} data.bookId - 书籍ID
 * @param {string} data.classManagementId - 班级ID
 * @returns {Promise} 返回提交结果
 * @description 学生提交作业，记录作业完成情况
 * @example
 * submitJob({
 *   bookId: "123",
 *   classManagementId: "456"
 * })
 */
export const submitJob = (data) => {
  return $http.post(api.submitJob, data)
}

/**
 * 加入班级
 * @param {Object} data - 加入班级数据
 * @param {string} data.classManagementPassword - 班级口令（必填）
 * @param {string} data.memberName - 学生姓名（必填）
 * @returns {Promise} 返回加入结果
 * @description 学生通过班级口令和姓名加入班级
 * @example
 * joinBookClassManagement({
 *   classManagementPassword: "abc123",
 *   memberName: "张三"
 * })
 *
 * @response
 * {
 *   code: 200,
 *   data: {},
 *   msg: "success"
 * }
 */
export const joinBookClassManagement = (data) => {
  return $http.post(api.joinBookClassManagement, data)
}
